//
// Created by axin on 24-8-19.
//
#include"SList.h"
//打印
void SListPrint(SListNode*phead) {
    SListNode* cur=phead;
    while (cur!=NULL) {
        printf("%d->",cur->data);
        cur=cur->next;
    }
    printf("NULL\n");
}
SListNode* BuySLitNode(SListDataType x) {
    SListNode* newNode=(SListNode*)malloc(sizeof(SListNode));
    if(newNode==NULL) {
        printf("申请节点失败\n");
        exit(-1);
    }
    newNode->data=x;
    newNode->next=NULL;
    return newNode;
}
//尾叉
void SListPushBack(SListNode** pphead,SListDataType x) {
    SListNode* newNode=BuySLitNode(x);
    if(*pphead==NULL) {
        *pphead=newNode;
    }else {
        SListNode* tail=*pphead;
        while(tail->next!=NULL) {
            tail=tail->next;
        }
        tail->next=newNode;
    }
}
//尾删
void SListPopBack(SListNode** pphead) {
    //1 空
    //2 一个
    //3 一个以上结点
    if(*pphead==NULL) {
        return;
    }else if((*pphead)->next==NULL) {
        free(*pphead);
        *pphead=NULL;
    }else {
        SListNode*tail=*pphead;
        SListNode*prev=tail;
        while(tail->next!=NULL) {
            prev=tail;
            tail=tail->next;
        }
        free(tail);
        prev->next=NULL;
    }
}
